gusucode.com > GUI界面实现语音增强matlab源码程序 > speech enhancement/last1.m

    wave_serial=wavread('4ks31.wav');
figure(1);
plot(wave_serial);

b=fir1(10,1/8);
s=filter(b,1,wave_serial);

E=zeros(1,2000);
N=2000;
for i=1:N
   E(i)=abs(s(i));
end
figure(2);
plot(E);



M1=E(1);
X=0;
for i=1:N
 if E(i)>M1
      M1=E(i);
      X=i;
    end
end
X1=X+400;

s1=s(X:X1);

N1=200;
r=zeros(1,200);
for i=1:N1
   for j=1:N1
      r(i)=r(i)+abs(s1(j)-s1(i+j));
   end
end
figure(3);
plot(r);

M2=r(1);
for i=1:N1
   if r(i)>M2
      M2=r(i);
   end
end
if M2>16
   M2=M2/3-1;
else
   M2=M2/2;
end


Y=zeros(1,20);
B=zeros(1,20);
j=0;
for i=2:(N1-1)
   if r(i-1)>r(i) & r(i)<r(i+1) & r(i) <M2
       j=j+1;
       Y(j)=i;
       B(j)=r(i);
   end
end

if j==0
   M1=0.03;
   for i=0:N
      if E(N-i)>M1
        X=N-i;
       break
       end
    end
    X1=X-800;
    X2=X-400;
    s1=s(X1:X2);
    N1=200;
    r=zeros(1,200);
    for i=1:N1
       for j=1:N1
          r(i)=r(i)+abs(s1(j)-s1(i+j));
       end
    end
    figure(3);
    plot(r);

    M2=r(1);
    for i=1:N1
       if r(i)>M2
          M2=r(i);
       end
    end
    if M2>16
       M2=M2/2-3;
    else
       M2=M2/2;
    end
    

    Y=zeros(1,20);
    B=zeros(1,20);
    j=0;
    for i=2:(N1-1)
       if r(i-1)>r(i) & r(i)<r(i+1) & r(i) <M2
          j=j+1;
          Y(j)=i;
          B(j)=r(i);
       end
    end
 end
 
 Z=zeros(1,20);
 Z=Y;
sign=0;
for i=2:j
   if (Z(i)-Z(i-1))>50
      sign=1;
   end
   if (Z(i)-Z(i-1))<13
      sign=1;
   end
end

N_keynote=Y(1);
j=j-1;
if sign==1
   F=Y(1);
   Q=4000/N_keynote;
else
   for i=1:j
      N_keynote=N_keynote+abs(Y(i+1)-Y(i));
   end
   j=j+1;
   F=N_keynote/j;
   Q=j*4000/N_keynote;
end

res='0';
if F<=20
   res='F';
else
   res='M';
end



Y
B
M2
res
F
X
Q
j
sign